package com.zmn.plat.services.interfaces.funswitch;

import java.util.List;

import com.zmn.common.dto.StatusDTO;
import com.zmn.plat.model.entity.funswitch.PublicBaseCodeMap;
import com.zmn.plat.model.entity.funswitch.PublicBaseCodeMapQuery;

/**
 *
 * 公共配置管理
 * 
 * @author hedaiping
 * @since 2019/03/25
 */
public interface PublicBaseCodeMapService {

    /**
     * 描述: BaseCodeMap key 查询数据
     *
     * @param mapId
     * @return BaseCodeMap
     */
    PublicBaseCodeMap findByKey(Integer mapId);

    /**
     * 描述:查询最大key
     *
     * @return mapId
     */
    Integer findKeyForMax();

    /**
     * 描述: 根据查询条件分页查询
     *
     * @param query
     * @return List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listPageByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: 根据查询条件查询所有数据
     *
     * @param query
     * @return List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: BaseCodeMap 数据
     *
     * @return List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listAll();

    /**
     * 描述: 根据查询条件统计满足条件的数据条数
     *
     * @param query
     * @return Integer
     */
    Integer countByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: 根据主键修改数据
     *
     * @param baseCodeMap
     * @return 执行结果码
     */
    Integer updateByKey(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 根据主键修改码表的状态
     *
     * @param baseCodeMap
     * @return 执行结果码
     * @auther tanghongjun
     * @since 2018/10/15 16:41
     */
    Integer updateStatus(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 批量修改状态
     *
     * @param dto
     * @return 执行结果码
     */
    Integer updateStatusBatch(StatusDTO dto);

    /**
     * 描述: 新增数据
     *
     * @param baseCodeMap
     * @return 执行结果码
     */
    Integer insert(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 根据主键删除数据
     *
     * @param mapId
     * @return 执行结果码
     */
    Integer deleteByKey(Integer mapId);

    /**
     * 根据名字查询状态 '状态：1停用，2启用'
     * 
     * @param name
     * @return 1 or 2
     */
    Integer getStatusByName(String name);

}
